/**
 * @功能: 项目依赖版本统一管理
 * @User Lmy
 * @Creat 2021/10/27 7:36 下午
 * @Compony 永远相信美好的事情即将发生
 */
object DependencyConfig {

    /**
     * @功能: 依赖版本号
     * @User Lmy
     * @Creat 2021/10/27 7:36 下午
     * @Compony 永远相信美好的事情即将发生
     */
    object Version {

        // AndroidX--------------------------------------------------------------
        const val AppCompat = "1.2.0"
        const val CoreKtx = "1.3.1"
        const val ConstraintLayout = "2.0.4"                // 约束布局
        const val TestExtJunit = "1.1.2"
        const val TestEspresso = "3.3.0"
        const val ActivityKtx = "1.2.0"
        const val FragmentKtx = "1.3.0"
        const val MultiDex = "2.0.1"
        const val Recyclerview = "1.2.1"
        const val Flexbox = "1.0.0"//流式布局


        // Android---------------------------------------------------------------
        const val Junit = "4.12"
        const val Material = "1.3.0"                        // 材料设计UI套件

        // Kotlin----------------------------------------------------------------
        const val Kotlin = "1.5.0"
        const val Coroutines = "1.5.0"                      // 协程

        // JetPack---------------------------------------------------------------
        const val Lifecycle = "2.3.1"                       // Lifecycle相关（ViewModel & LiveData & Lifecycle）
        const val LifecycleExtensions = "2.2.0"
        const val Hilt = "2.35.1"                           // DI框架-Hilt
        const val HiltAndroidx = "1.0.0"
        const val Paging3 = "3.0.0-beta01"                    // Paging3
        const val Paging3Ktx = "3.0.1"

        // GitHub----------------------------------------------------------------
        const val OkHttp = "4.9.0"                          // OkHttp
        const val OkHttpInterceptorLogging = "4.9.1"        // OkHttp 请求Log拦截器
        const val Retrofit = "2.9.0"                        // Retrofit
        const val RetrofitConverterGson = "2.9.0"           // Retrofit Gson 转换器
        const val RxAndroid = "2.1.1"
        const val Retrofit2RxJava2 = "2.7.1"
        const val Gson = "2.8.7"                            // Gson
        const val MMKV = "1.2.9"                            // 腾讯 MMKV 替代SP
        const val AutoSize = "1.2.1"                        // 屏幕适配
        const val ARoute = "1.5.1"                          // 阿里路由
        const val ARouteCompiler = "1.5.1"                  // 阿里路由 APT
        const val RecyclerViewAdapter = "3.0.4"             // RecyclerViewAdapter
        const val EventBus = "1.8.0"                        // 事件总线
        const val PermissionX = "1.7.1"                     // 权限申请
        const val LeakCanary = "2.7"                        // 检测内存泄漏
        const val AutoService = "1.0"                       // 自动生成SPI暴露服务文件
        const val Coil = "1.3.0"                            // Kotlin图片加载框架
        const val Glide = "4.12.0"                          // Glide图片加载框架
        const val GlideCompiler = "4.12.0"                  // Glide图片加载框架
        const val GlideTransformations = "4.3.0"            // Glide图片加载框架
        const val Roundedimageview = "2.3.0"                // 带圆角，边框的的ImageView
        const val Matisse = "0.5.2-beta3"                   // 知乎图片选择
        const val Ucrop = "2.2.2"                           // 图片裁剪
        const val Imagezoom = "1.0.4"                       // 图片缩放效果
        const val ImageCropper = "2.8.0"                    // 图片选择和裁剪
        const val PictureLibrary = "v2.6.0"                 // 图片选择和裁剪
        const val Immersionbar = "3.0.0"                    // 状态栏适配
        const val Zloading = "1.2.0"                        // 多风格加载框
        const val RecyclerviewSideslip = "1.3.2"            // 侧滑菜单的Recyclerview
        const val PickerView = "4.1.9"                      // 选择器
        const val SkinSupport = "4.0.5"                     // skin-support 基础控件支持
        const val SmartRefresh = "2.0.1"                    // 智能刷新加载

        const val MagicIndicator = "1.5.0"                    // ViewPager指示器
        const val Banner = "2.1.0"                    // ViewPager指示器
        const val Smoothprogressbar = "1.1.0"                    // 水平进度条
        const val ToastUtils = "9.6"                    // ToastUtils


        // 第三方SDK--------------------------------------------------------------
        const val TencentBugly = "latest.release"                    // 腾讯Bugly 异常上报
        const val TencentBuglyNative = "latest.release"              // Bugly native异常上报
        const val TencentTBSX5 = "43939"                    // 腾讯X5WebView
    }


    /**
     * @功能: AndroidX相关依赖
     * @User Lmy
     * @Creat 2021/10/27 8:38 下午
     * @Compony 永远相信美好的事情即将发生
     */
    object AndroidX {
        const val AndroidJUnitRunner = "androidx.test.runner.AndroidJUnitRunner"
        const val AppCompat = "androidx.appcompat:appcompat:${Version.AppCompat}"
        const val CoreKtx = "androidx.core:core-ktx:${Version.CoreKtx}"
        const val ConstraintLayout =
            "androidx.constraintlayout:constraintlayout:${Version.ConstraintLayout}"
        const val TestExtJunit = "androidx.test.ext:junit:${Version.TestExtJunit}"
        const val TestEspresso = "androidx.test.espresso:espresso-core:${Version.TestEspresso}"
        const val ActivityKtx = "androidx.activity:activity-ktx:${Version.ActivityKtx}"
        const val FragmentKtx = "androidx.fragment:fragment-ktx:${Version.FragmentKtx}"
        const val MultiDex = "androidx.multidex:multidex:${Version.MultiDex}"
        const val Recyclerview = "androidx.recyclerview:recyclerview:${Version.Recyclerview}"
        const val Flexbox = "com.google.android:flexbox:${Version.Flexbox}"


    }

    /**
     * @功能: Android相关依赖
     * @User Lmy
     * @Creat 2021/10/27 8:38 下午
     * @Compony 永远相信美好的事情即将发生
     */
    object Android {
        const val Junit = "junit:junit:${Version.Junit}"
        const val Material = "com.google.android.material:material:${Version.Material}"
    }

    /**
     * @功能: JetPack相关依赖
     * @User Lmy
     * @Creat 2021/10/27 8:38 下午
     * @Compony 永远相信美好的事情即将发生
     */
    object JetPack {
        const val ViewModel = "androidx.lifecycle:lifecycle-viewmodel-ktx:${Version.Lifecycle}"
        const val ViewModelSavedState =
            "androidx.lifecycle:lifecycle-viewmodel-savedstate:${Version.Lifecycle}"
        const val LiveData = "androidx.lifecycle:lifecycle-livedata-ktx:${Version.Lifecycle}"
        const val LifecycleRuntime = "androidx.lifecycle:lifecycle-runtime-ktx:${Version.Lifecycle}"
        const val LifecycleExtensions =
            "androidx.lifecycle:lifecycle-extensions:${Version.LifecycleExtensions}"
        const val LifecycleCompilerAPT =
            "androidx.lifecycle:lifecycle-compiler:${Version.Lifecycle}"
        const val HiltCore = "com.google.dagger:hilt-android:${Version.Hilt}"
        const val HiltApt = "com.google.dagger:hilt-compiler:${Version.Hilt}"
        const val HiltAndroidx = "androidx.hilt:hilt-compiler:${Version.HiltAndroidx}"
        const val Paging3 = "androidx.paging:paging-runtime:${Version.Paging3}"
        const val Paging3Ktx = "androidx.paging:paging-common-ktx:${Version.Paging3Ktx}"

    }

    /**
     * @功能: Kotlin相关依赖
     * @User Lmy
     * @Creat 2021/10/27 8:38 下午
     * @Compony 永远相信美好的事情即将发生
     */
    object Kotlin {
        const val Kotlin = "org.jetbrains.kotlin:kotlin-stdlib:${Version.Kotlin}"
        const val CoroutinesCore =
            "org.jetbrains.kotlinx:kotlinx-coroutines-core:${Version.Coroutines}"
        const val CoroutinesAndroid =
            "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Version.Coroutines}"
    }

    /**
     * @功能: GitHub及其他相关依赖
     * @User Lmy
     * @Creat 2021/10/27 8:39 下午
     * @Compony 永远相信美好的事情即将发生
     */
    object GitHub {
        const val OkHttp = "com.squareup.okhttp3:okhttp:${Version.OkHttp}"
        const val OkHttpInterceptorLogging =
            "com.squareup.okhttp3:logging-interceptor:${Version.OkHttpInterceptorLogging}"
        const val Retrofit = "com.squareup.retrofit2:retrofit:${Version.Retrofit}"
        const val RetrofitConverterGson =
            "com.squareup.retrofit2:converter-gson:${Version.RetrofitConverterGson}"
        const val Gson = "com.google.code.gson:gson:${Version.Gson}"
        const val MMKV = "com.tencent:mmkv-static:${Version.MMKV}"
        const val AutoSize = "me.jessyan:autosize:${Version.AutoSize}"
        const val ARoute = "com.alibaba:arouter-api:${Version.ARoute}"
        const val ARouteCompiler = "com.alibaba:arouter-compiler:${Version.ARouteCompiler}"
        const val RecyclerViewAdapter =
            "com.github.CymChad:BaseRecyclerViewAdapterHelper:${Version.RecyclerViewAdapter}"
        const val LiveEventBus = "io.github.jeremyliao:live-event-bus:${Version.EventBus}"
        const val EventBusAPT = "org.greenrobot:eventbus-annotation-processor:${Version.EventBus}"
        const val PermissionX = "com.permissionx.guolindev:permissionx:${Version.PermissionX}"
        const val LeakCanary = "com.squareup.leakcanary:leakcanary-android:${Version.LeakCanary}"
        const val AutoService = "com.google.auto.service:auto-service:${Version.AutoService}"
        const val AutoServiceAnnotations =
            "com.google.auto.service:auto-service-annotations:${Version.AutoService}"
        const val Coil = "io.coil-kt:coil:${Version.Coil}"
        const val CoilGIF = "io.coil-kt:coil-gif:${Version.Coil}"
        const val CoilSVG = "io.coil-kt:coil-svg:${Version.Coil}"
        const val CoilVideo = "io.coil-kt:coil-video:${Version.Coil}"
        const val RxAndroid = "io.reactivex.rxjava2:rxandroid:${Version.RxAndroid}"
        const val Retrofit2RxJava2 =
            "com.squareup.retrofit2:adapter-rxjava2:${Version.Retrofit2RxJava2}"
        const val Glide = "com.github.bumptech.glide:glide:${Version.Glide}"
        const val GlideCompiler = "com.github.bumptech.glide:compiler:${Version.GlideCompiler}"
        const val GlideTransformations =
            "jp.wasabeef:glide-transformations:${Version.GlideTransformations}"
        const val Roundedimageview = "com.makeramen:roundedimageview:${Version.Roundedimageview}"
        const val Matisse = "com.zhihu.android:matisse:${Version.Matisse}"
        const val Ucrop = "com.github.yalantis:ucrop:${Version.Ucrop}"
        const val Imagezoom = "it.sephiroth.android.library.imagezoom:library:${Version.Imagezoom}"
        const val ImageCropper =
            "com.theartofdev.edmodo:android-image-cropper:${Version.ImageCropper}"
        const val PictureLibrary =
            "com.github.LuckSiege.PictureSelector:picture_library:${Version.PictureLibrary}"
        const val Immersionbar = "com.gyf.immersionbar:immersionbar:${Version.Immersionbar}"
        const val Zloading = "com.zyao89:zloading:${Version.Zloading}"
        const val RecyclerviewSideslip =
            "com.yanzhenjie.recyclerview:x:${Version.RecyclerviewSideslip}"
        const val PickerView = "com.contrarywind:Android-PickerView:${Version.PickerView}"
        const val SkinSupport = "skin.support:skin-support:${Version.SkinSupport}"//换肤核心插件
        const val SkinAppcompat = "skin.support:skin-support-appcompat:${Version.SkinSupport}"
        const val SkinDesign = "skin.support:skin-support-design:${Version.SkinSupport}"
        const val SkinCardview = "skin.support:skin-support-cardview:${Version.SkinSupport}"
        const val SkinConstraintLayout =
            "skin.support:skin-support-constraint-layout:${Version.SkinSupport}"
        const val SmartRefreshLayoutKernel =
            "com.scwang.smart:refresh-layout-kernel:${Version.SmartRefresh}"//核心必须依赖
        const val SmartRefreshHeaderClassics =
            "com.scwang.smart:refresh-header-classics:${Version.SmartRefresh}"//经典刷新头
        const val SmartRefreshHeaderMaterial =
            "com.scwang.smart:refresh-header-material:${Version.SmartRefresh}"//谷歌刷新头
        const val SmartRefreshHeaderRadar =
            "com.scwang.smart:refresh-header-radar:${Version.SmartRefresh}"//雷达刷新头
        const val SmartRefreshHeaderFalsify =
            "com.scwang.smart:refresh-header-falsify:${Version.SmartRefresh}"//虚拟刷新头
        const val SmartRefreshHeaderTwoLevel =
            "com.scwang.smart:refresh-header-two-level:${Version.SmartRefresh}"//二级刷新头
        const val SmartRefreshHeaderBall =
            "com.scwang.smart:refresh-header-ball:${Version.SmartRefresh}"//球脉冲加载

        const val MagicIndicator =
            "com.github.hackware1993:MagicIndicator:${Version.MagicIndicator}"
        const val Banner =
            "com.youth.banner:banner:${Version.Banner}"
        const val Smoothprogressbar =
            "com.github.castorflex.smoothprogressbar:library:${Version.Smoothprogressbar}"
        const val ToastUtils =
            "com.github.getActivity:ToastUtils:${Version.ToastUtils}"

        const val FaceDetection = "com.google.mlkit:face-detection:16.1.5"


    }

    /**
     * @功能: SDK相关依赖
     * @User Lmy
     * @Creat 2021/10/27 7:43 下午
     * @Compony 永远相信美好的事情即将发生
     */
    object SDK {
        const val TencentBugly = "com.tencent.bugly:crashreport:${Version.TencentBugly}"
        const val TencentBuglyNative =
            "com.tencent.bugly:nativecrashreport:${Version.TencentBuglyNative}"
        const val TencentTBSX5 = "com.tencent.tbs.tbssdk:sdk:${Version.TencentTBSX5}"
    }
}